package com.dzx.currentency.publish;

/**
 * @author DuanZhaoXu
 * @ClassName:
 * @Description:
 * @date 2018年11月19日 09:31:23
 */

import com.dzx.currentency.annoations.NotThreadSafe;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 懒汉模式
 * 单例的实例在第一次使用的时候进行创建
 * <p>
 * 在单线程的环境下，没有问题，但是在多线程的环境下就会出问题。
 */
@NotThreadSafe
@Slf4j
public class SingletonExample1 {

    //私有构造函数
    private SingletonExample1() {

    }

    //单例对象
    private static SingletonExample1 instance = null;


    //静态的工厂方法
    //懒汉模式本身时线程不安全的，加上了synchronized关键字之后就可以实现安全
    //但是降低了性能，因此并不推荐这种写法
    public static  synchronized SingletonExample1 getInstance() {
        if (instance == null) {
            instance = new SingletonExample1();
        }
        return instance;
    }
}
